home *** CD-ROM | disk | FTP | other *** search
- //: C18:Walrus.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Freezing a strstream
- #include <iostream>
- #include <strstream>
- using namespace std;
-
- int main() {
- ostrstream s;
- s << "'The time has come', the walrus said,";
- s << ends;
- cout << s.str() << endl; // String is frozen
- // s is frozen; destructor won't delete
- // the streambuf storage on the heap
- s.seekp(-1, ios::cur); // Back up before NULL
- s.rdbuf()->freeze(0); // Unfreeze it
- // Now destructor releases memory, and
- // you can add more characters (but you
- // better not use the previous str() value)
- s << " 'To speak of many things'" << ends;
- cout << s.rdbuf();
- } ///:~
-